#include<iostream>
using namespace std;

#include<vector>
#include<string>

// template<class T>
// class vector
// {
// private:
// 	T* _a;
// 	size_t _size;
// 	size_t _capacity;
// };

// vector<int>
// class vector
// {
// public:
// 	int& operator[](size_t i)
// 	{
// 		//....
// 		return _a[i];
// 	}
// private:
// 	int* _a;
// 	size_t _size;
// 	size_t _capacity;
// };

// //vector<vector<int>>
// class vector
// {
// public:
// 	vector<int>& operator[](size_t i)
// 	{
// 		//....
// 		return _a[i];
// 	}
// private:
// 	vector<int>* _a;
// 	size_t _size;
// 	size_t _capacity;
// };

void test_vector1()
{
	vector<double> v2;

	// string
	// vector<char>

	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);
	v1.push_back(4);

	for (size_t i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;

	// 大众 奥迪 保时捷
	vector<int>::iterator it1 = v1.begin();
	while (it1 != v1.end())
	{
		cout << *it1 << " ";
		++it1;
	}
	cout << endl;

	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;
}

//void push_back(const string& s)
//{}

void test_vector2()
{
	vector<string> v2;

	string s1("张三");
	v2.push_back(s1);
	v2.push_back(string("李四"));
	v2.push_back("王五");

	v2[1] += "来";

	for (const auto& e : v2)
	{
		cout << e << " ";
	}
	cout << endl;
}

int main()
{
	test_vector2();

	return 0;
}